package com.sgzn.sgpay.service;

import com.sgzn.sgpay.model.request.*;
import com.sgzn.sgpay.model.response.SgsResultResponse;
import com.sgzn.sgpay.model.response.result.DevicePageListResult;
import com.sgzn.sgpay.model.response.vo.DeviceInfoVo;
import com.sgzn.sgpay.persistence.domain.TDevice;

import java.util.List;

/**
 * Created by xxjs-gd-llf
 * DATETIME:2018/4/6 14:14
 * Description: 设备接口
 */
public interface SgsDeviceService {

    /**
     * 添加设备
     */
    SgsResultResponse<String> addDevice(SgsDeviceAddRequest request);

    /**
     * （批量）删除设备
     */
    SgsResultResponse<String> deleteDevice(SgsDeviceDeleteRequest request);

    /**
     * 用户 查询设备信息
     * @param request
     */
    SgsResultResponse<DeviceInfoVo> queryDeviceInfo(SgsDeviceQueryRequest request);

    /**
     * 商户 查询设备信息
     * @param request
     */
    SgsResultResponse<DeviceInfoVo> queryMchDeviceInfo(SgsDeviceMchQueryRequest request);

    /**
     * 更新设备
     */
    SgsResultResponse<String> updateDevice(SgsDeviceUpdateRequest request);


    /**
     * 更新设备 Tcp
     */
    SgsResultResponse<String> updateDeviceTcp(SgsDeviceUpdateTcpRequest request);

    /**
     * 更新设备状态
     */
    SgsResultResponse<String> updateDeviceStateById(String deviceId,String deviceState);

    /**
     * 分页查询
     * @param request
     * @return
     */
    SgsResultResponse<DevicePageListResult> queryPageList(SgsDeviceQueryPageRequest request);

    /**
     * 查询可选场地编码
     * @param request
     * @return
     */
    SgsResultResponse<List<String>> queryAvailCode(SgsDeviceAvailCodeQueryRequest request);

    /**
     * 绑定礼品
     */
    SgsResultResponse<String> bindPresent(SgsDeviceBindPresentRequest request);

    /**
     * 查询设备单价
     * @param request
     */
    SgsResultResponse<TDevice> queryDevicePrice(SgsDeviceQueryRequest request);
}
